package main

import (
	"fmt"
	"reflect"
	"strings"
)

func main() {
	// `` ""   反引号 双引号 可以定义字符串
	//"\t \n" 保留\t放在反引号内``
	s := "\t\txiaokang  123"
	t := "\t\tzhukai    456"
	fmt.Println(s)
	fmt.Println(t)
	s1 := `
	我是江苏海洋大学的一名学生
	我的名字叫做杨旭
	`
	fmt.Println(s1)
	s4 := "yangxu"
	s5 := "杨旭" //中文占用三个字符
	s4Len := len(s4)
	s5Len := len(s5)
	fmt.Println(s4Len, s5Len)

	//字符串的截取

	fmt.Println("前两位:", s4[:])
	fmt.Println("前两位:", s4[:2])
	//strings 包

	s6 := "yangxuyang"
	//大写
	fmt.Println("转成大写:", strings.ToUpper(s6))
	//开头大写
	fmt.Println("首字母大写:", strings.Title(s6))
	s7 := "YangXu"
	//小写
	fmt.Println("首字母小写:", strings.ToLower(s7))
	//字符串拼接
	handsomeBoy := strings.Join([]string{"yangxu is so handsome", "guoyu is also a handsome man"}, ";\n")
	fmt.Println(handsomeBoy)

	fmt.Println("拼接:", strings.Join([]string{"yangxu", "yangxuyang"}, "-"))
	//字符串分割
	s8 := "yang-xuxu"
	s9 := strings.Split(s8, "-")
	fmt.Println(s9[0])

	fmt.Println(reflect.TypeOf(s9))        //返回的是切片类型
	s8Split := strings.SplitAfter(s8, "-") //分割后保留分隔符 分隔符默认跟在前面的元素索引位置上
	fmt.Println("test:", s8Split)
	fmt.Println(s8Split[0])

	//判断是否包含某个字符串
	c1 := strings.Contains(s8, "yang")
	fmt.Println(c1)

	//忽略大小写判断
	fmt.Println("忽略大小写进行比较", strings.EqualFold(s7, "YANGXU"))

	//判断字符串是否以某个子串开头或结尾
	fmt.Println("是否以yang开头:", strings.HasPrefix(s8, "yang"))
	fmt.Println("是否以yang结尾:", strings.HasSuffix(s8, "yang"))

	fmt.Println("查看字符串是否包含任意一个字符", strings.ContainsAny(s8, "uw")) //u | w

	//判断字符串某个元素个数
	fmt.Println("判断字符串某个元素个数", strings.Count(s8, "y"))
	//字符串替换
	fmt.Println("字符串替换", strings.Replace(s8, "yang", "yangkang", 1)) //-1 表示全部替换
	//字符串全部替换
	fmt.Println("字符串全部替换", strings.ReplaceAll(s8, "yang", "yangkang"))

	//字符串重复n次
	fmt.Println("字符串重复n次", strings.Repeat(s8, 3))

	//字符串修剪
	//Trim 系列函数可以去除字符串的前缀和后缀，但不包括中间的空格

	c := "  hemingkang xiaohe,"
	fmt.Println(c)
	fmt.Println("去掉前后空格:", strings.Trim(c, ","))
	fmt.Println(strings.Replace(c, "he", "He", -1))

}
